package com.ado.agea.revista;

import java.util.ArrayList;
import java.util.List;

public class Familia {
	private List<Familia> subFamilias = new ArrayList<Familia>();
	private List<Concepto> conceptos = new ArrayList<Concepto>();
	public static int id_sub_familia = 0;

	private int id;
	private int id_familia;
	private Integer id_parent;
	private String nombre;
	private int nivel;

	public Familia(int id_familia, String nombre, int nivel) {
		this.id = id_sub_familia++;
		this.id_familia = id_familia;
		this.nombre = nombre;
		this.nivel = nivel;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public int getId_familia() {
		return id_familia;
	}

	public void setId_familia(int id_familia) {
		this.id_familia = id_familia;
	}

	public int getId_parent() {
		return id_parent;
	}

	public void setId_parent(int id_parent) {
		this.id_parent = id_parent;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public int getNivel() {
		return nivel;
	}

	public void setNivel(int nivel) {
		this.nivel = nivel;
	}

	public void agregarSubFamilia(Familia subFamilia) {
		subFamilias.add(subFamilia);
	}

	public void agregarConcepto(Concepto concepto) {
		this.conceptos.add(concepto);
	}

	@Override
	public String toString() {
		StringBuilder sb = new StringBuilder();
		sb.append("INSERT INTO `familia` (`id`,`id_familia`,`id_parent`,`nombre`,`nivel`) VALUES ('"+ id +"','"+ id_familia + "',)");
		sb.append((id_parent == null) ? " NULL," : " '" + id_parent + "',");
		sb.append((nombre == null) ? " NULL," : " '" + nombre.replace("'", "''") + "',");
		sb.append("'" + nivel + "'");
		if (conceptos.size() > 0) {
			for (Concepto concepto : conceptos) {
				sb.append(concepto.toString() + "\n");
			}
		}
		if (subFamilias.size() > 0) {
			for (Familia familia : subFamilias) {
				sb.append(familia.toString());
			}
		}
		return sb.toString();
	}

}
